﻿using SimbaRGVMonitor.Common.Diagnostics;

namespace SimbaRGVMonitor
{
    partial class MonitorCenter
    {
        private MonitorCenter()
        {
            InitializeSettings();
        }

        //====================================================================================================
        //以上是类型构造函数
        //----------------------------------------------------------------------------------------------------
        //以下是类型字段
        //====================================================================================================

        private static readonly LoggerPool loggerPool = new LoggerPool();
        private static readonly MonitorLogBox logBox = new MonitorLogBox();
        private static readonly MonitorCenter instance = new MonitorCenter();

        //====================================================================================================
        //以上是类型字段
        //----------------------------------------------------------------------------------------------------
        //以下是类型属性
        //====================================================================================================

        public MonitorLogBox LogBox
        {
            get { return logBox; }
        }

        public static MonitorCenter Instance
        {
            get { return instance; }
        }


        //====================================================================================================
        //以上是类型属性
        //----------------------------------------------------------------------------------------------------
        //以下是初始化设置
        //====================================================================================================

        private static void InitializeSettings()
        {
            loggerPool.LogWrited += WhenLogWrited;
        }

        //====================================================================================================
        //以上是初始化设置
        //----------------------------------------------------------------------------------------------------
        //以下是日志写入事件侦听
        //====================================================================================================

        private static void WhenLogWrited(object sender, MonitorLoggerWritedEventArgs e)
        {
            var level = e.WriteLevel;
            var logText = e.WriteMessage;
            var receiveTime = e.WriteTime;
            logBox.Dispatcher.InvokeAsync(() => logBox.AddLog(receiveTime, level, logText));
        }

        //====================================================================================================
        //以上是日志写入事件侦听
        //----------------------------------------------------------------------------------------------------
        //以下是开始及关闭
        //====================================================================================================

        public void Init()
        {
           
        }

        public void ShutDown()
        {
            
        }

        //====================================================================================================
        //以上是初始化设置
        //----------------------------------------------------------------------------------------------------
        //以下是获取日志
        //====================================================================================================

        public MonitorLogger GetLogger(string name)
        {
            return loggerPool.GetLogger(name);
        }
    }
}
